The time required for execution of program code can be greatly impacted by the time required to perform memory operations. Over many repeated executions, small increases in the time required for particular memory operations can result in large increases in overall computation time.
Software profiling may be used to determine particular areas of a program that are consuming excess time or memory. However, modifying, or instrumenting, the software program code to provide such information can significantly alter the operation and behavior of the program, particularly in multi-threaded or parallel programs.
What is needed is a system for facilitating profiling of computer software that provides the benefits of software profiling, but still allows for representative operation of the program code.